# 24.07.02——Python自学笔记
# 内置函数

# max与min——最大值与最小值
# min( x, y, z, .... )
# max( x, y, z, .... )
# x -- 数值表达式。
# y -- 数值表达式。
# z -- 数值表达式。
# 返回给定参数的最值，参数可以为序列

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
min_value = min(my_list)
max_value = max(my_list)
print(min_value, max_value)

# sum——对序列进行求和
# sum(iterable[, start])
# iterable -- 可迭代对象，如：列表、元组、集合。
# start -- 指定相加的参数，如果没有设置这个值，默认为0。
# 返回序列中值的总和

a_tuple = (1, 2, 3, 4, 5, 6, 7, 8, 9)
b_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
c_set = set(a_tuple)
print(sum(a_tuple))
print(sum(b_list))
print(sum(c_set))

# abs——数字的绝对值
# abs( x )
# x -- 数值表达式，可以是整数，浮点数，复数。
# 函数返回 x（数字）的绝对值，如果参数是一个复数，则返回它的大小。

print(abs(-20))
print(abs(complex(1, 2)))
print(abs(-3.5))

# ord—— ASCII 数值，或者 Unicode 数值。
# ord(c)
# c -- 字符。
# 返回值是对应的十进制整数。

print(ord('a'))

# hex——16 进制数
# hex(x)
# x -- 一个整数
# 返回一个字符串，以 0x 开头。

print(hex(3))

# bin——二进制数
# bin(x)
# x -- int 或者 long int 数字
# 返回值——返回一个整数 int 或者长整数 long int 的二进制表示的字符串

print(bin(123456789123))

# pow——幂函数
#  math 模块 pow() 方法的语法:
# import math
# math.pow( x, y )
# 内置的 pow() 方法
# pow(x, y[, z])
# 函数是计算x的y次方，如果z在存在，则再对结果进行取模，其结果等效于pow(x,y) %z
# 注意：pow() 通过内置的方法直接调用，内置方法会把参数作为整型，而 math 模块则会把参数转换为 float。
# x -- 数值表达式。
# y -- 数值表达式。
# z -- 数值表达式。
# 返回 x^y（x的y次方） 的值

print(pow(2, 3))
print(pow(2, 3, 3))
import math
print(math.pow(2, 3))

# List count()方法——统计元素在列表中出现的次数
# list.count(obj)
# obj -- 列表中统计的对象。
# 返回元素在列表中出现的次数。

a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a_list.count(8))

# List index()方法——值定位
# list.index(x[, start[, end]])
# x-- 查找的对象。
# start-- 可选，查找的起始位置。
# end-- 可选，查找的结束位置。
# 该方法返回查找对象的索引位置，如果没有找到对象则抛出异常。

a_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a_list.index(8))

# isalpha、isdigit、isspace——判断字母、数字、空格
# str.isalpha()
# 如果字符串至少有一个字符并且所有字符都是字母或文字则返回 True，否则返回 False
# str.isdigit()
# 如果字符串只包含数字则返回 True 否则返回 False。
# str.isspace()
# 如果字符串中只包含空格，则返回 True，否则返回 False.

print('abc'.isalpha())
print('123'.isdigit())
print(' '.isspace())

# find()方法——字符串定位
# str.find(str, beg=0, end=len(string))
# str -- 指定检索的字符串
# beg -- 开始索引，默认为0。
# end -- 结束索引，默认为字符串的长度。
# 如果包含子字符串返回开始的索引值，否则返回-1。

my_str = 'abcdefg'
print(my_str.find('efg'))

# str count()方法——统计字符出现的次数
# str.count(sub, start= 0,end=len(string))
# sub -- 搜索的子字符串
# start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
# end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
# 该方法返回子字符串在字符串中出现的次数。

print('aaaaaabcdaaa'.count('a'))

# str plit()方法——拆分字符串
# str.split(str="", num=string.count(str))
# str -- 分隔符，默认为所有的空字符，包括空格、换行(\n)、制表符(\t)等。
# num -- 分割次数，如果设置了这个参数，则最多分割成 maxsplit+1 个子字符串。默认为 -1, 即分隔所有。
# 返回分割后的字符串列表。

print('a a a a a a'.split())

# str join()方法——连接字符串
# str.join(sequence)
# sequence -- 要连接的元素序列。
# 返回通过指定字符连接序列中元素后生成的新字符串。

str_list = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
print(' '.join(str_list))

# str replace()方法——替换字符串
# str.replace(old, new[, max])
# old -- 将被替换的子字符串。
# new -- 新字符串，用于替换old子字符串。
# max -- 可选字符串, 替换不超过 max 次
# 返回字符串中的 old（旧字符串） 替换成 new(新字符串)后生成的新字符串，如果指定第三个参数max，则替换不超过 max 次。

print('abcdeeg'.replace('e','f'))

# round——浮点数四舍五入
# round( x [, n]  )
# x -- 数字表达式。
# n -- 表示从小数点位数，其中 x 需要四舍五入，默认值为 0。
# 返回浮点数x的四舍五入值。

print(round(1.23456789, 2))

# eval() 函数——表达式的结果
# eval() 函数用来执行一个字符串表达式，并返回表达式的值。
# 字符串表达式可以包含变量、函数调用、运算符和其他 Python 语法元素。
# eval(expression[, globals[, locals]])
# expression -- 表达式。
# globals -- 变量作用域，全局命名空间，如果被提供，则必须是一个字典对象。
# locals -- 变量作用域，局部命名空间，如果被提供，可以是任何映射对象。
# eval() 函数将字符串 expression 解析为 Python 表达式，并在指定的命名空间中执行它。
# eval() 函数将字符串转换为相应的对象，并返回表达式的结果。

print(eval('1 + 2 * 3'))

# set与sorted函数——创建集合与排序
# set() 函数创建一个无序不重复元素集，可进行关系测试，删除重复数据，还可以计算交集、差集、并集等。
# set 语法：
# class set([iterable])
# iterable -- 可迭代对象对象；
# 返回新的集合对象
# sorted() 函数对所有可迭代的对象进行排序操作。
# sort 与 sorted 区别：
# sort 是应用在 list 上的方法，sorted 可以对所有可迭代的对象进行排序操作。
# list 的 sort 方法返回的是对已经存在的列表进行操作，而内建函数 sorted 方法返回的是一个新的 list，而不是在原来的基础上进行的操作。
# sorted(iterable, key=None, reverse=False)
# iterable -- 可迭代对象。
# key -- 主要是用来进行比较的元素，只有一个参数，具体的函数的参数就是取自于可迭代对象中，指定可迭代对象中的一个元素来进行排序。
# reverse -- 排序规则，reverse = True 降序 ， reverse = False 升序（默认）。
# 返回重新排序的列表。

my_set = set([1, 1, 1, 5, 5, 5, 9, 9, 9, 2, 2, 2, 3, 3, 3])
sorted_set = sorted(my_set)
print(sorted_set)

